package leetcode.hashtable;

import java.util.HashMap;
import java.util.Map;

//13. 罗马数字转整数
public class RomanToInt {
    public static void main(String[] args) {

        System.out.println(romanToInt2("MCMXCIV"));
    }


    //哈希表
    public static int romanToInt(String s) {
        Map<Character, Integer> symbolValues = new HashMap<Character, Integer>() {{
            put('I', 1);
            put('V', 5);
            put('X', 10);
            put('L', 50);
            put('C', 100);
            put('D', 500);
            put('M', 1000);
        }};
        int sum=0;
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (i!=s.length()-1 &&symbolValues.get(ch)<symbolValues.get(s.charAt(i+1))){
                sum+=symbolValues.get(s.charAt(i+1))-symbolValues.get(ch);
                i++;
            }else {
                sum+=symbolValues.get(ch);
            }
        }
        return sum;
    }


    //简化
    public static int romanToInt2(String s) {
        Map<Character, Integer> symbolValues = new HashMap<Character, Integer>() {{
            put('I', 1);
            put('V', 5);
            put('X', 10);
            put('L', 50);
            put('C', 100);
            put('D', 500);
            put('M', 1000);
        }};
        int sum=0;
        for (int i = 0; i < s.length(); i++) {
            int  value = symbolValues.get(s.charAt(i));
            if (i!=s.length()-1 &&value<symbolValues.get(s.charAt(i+1))){
                sum-=value;
            }else {
                sum+=value;
            }
        }
        return sum;
    }
}
